As is known in the art, distributed storage has attracted interest from both industry and researchers as a flexible, cost-efficient, high performance, and potentially secure solution for geographically distributed data centers, edge caching or sharing storage among users. Distributed storage systems are designed to store data reliably over long periods of time using a collection of storage nodes which are individually unreliable. Different techniques are known for achieving reliability in such a system. A simple approach is to replicate data across multiple nodes, however this approach can be inefficient in terms of network data transfer and storage space.
Some distributed and cloud storage solutions rely on erasure codes to provide high reliability while reducing the overall storage space. Erasure codes allow a distributed storage system to split a packet in multiple fragments, encode them, and spread the coded fragments across nodes, delivering the same or better reliability than data replication but with less redundancy (i.e., storage space) than simple replication. One of the challenges with erasure codes is that redundancy must be refreshed as storage nodes fail, requiring large data transfers to occur across the network.
In this context, distributed and cloud storage utilizing network codes has shown a large potential for trading off storage cost and network use for repairing lost fragments of data as well as a flexible mechanism to update storage conditions and requirements on-the-fly.